{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-08-11T08:09:14.465686Z",
     "start_time": "2025-08-11T08:09:13.300855Z"
    }
   },
   "outputs": [],
   "source": [
    "import paddle\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import os\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "下载并加载训练数据\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Cache file C:\\Users\\Administrator\\.cache\\paddle\\dataset\\uci_housing\\housing.data not found, downloading http://paddlemodels.bj.bcebos.com/uci_housing/housing.data \n",
      "Begin to download\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item 12/12 [==========================>...] - ETA: 0.0008174115500878543s - 832us/item加载完成\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Download finished\n"
     ]
    }
   ],
   "source": [
    "paddle.set_default_dtype(\"float64\")\n",
    "\t# 下载数据\n",
    "print('下载并加载训练数据')\n",
    "train_dataset = paddle.text.datasets.UCIHousing(mode='train')\n",
    "eval_dataset = paddle.text.datasets.UCIHousing(mode='test')\n",
    "\n",
    "\t# 封装训练数据\n",
    "train_loader = paddle.io.DataLoader(train_dataset, batch_size=32, shuffle=True)\n",
    "eval_loader = paddle.io.DataLoader(eval_dataset, batch_size = 8, shuffle=False)\n",
    "print('加载完成')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-08-11T08:09:46.449961Z",
     "start_time": "2025-08-11T08:09:45.877839Z"
    }
   },
   "id": "e9d039365058ce",
   "execution_count": 3
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "# 步骤二 模型配置\n",
    "\t# 全连接网络框架\n",
    "class Regressor(paddle.nn.Layer):\n",
    "    def __init__(self):\n",
    "        super(Regressor, self).__init__()\n",
    "        # 定义二层全连接层，输入特征维度是13，输出维度是1\n",
    "        self.fc1 = paddle.nn.Linear(in_features=13, out_features=6,)\n",
    "        self.fc2 = paddle.nn.Linear(in_features=6, out_features=1,)\n",
    "        # 激活函数\n",
    "        # self.act = paddle.nn.Sigmoid()\n",
    "        self.act = paddle.nn.ReLU()\n",
    "    \n",
    "    # 网络的前向计算函数\n",
    "    def forward(self, inputs):\n",
    "        outputs = self.fc1(inputs)\n",
    "        outputs = self.act(outputs)\n",
    "        pred = self.fc2(outputs)\n",
    "        return pred"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-08-11T08:10:12.161337Z",
     "start_time": "2025-08-11T08:10:12.154182Z"
    }
   },
   "id": "8e03c8077ee95f45",
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch:0,step:10,train_loss:595.7047629723407\n",
      "epoch:1,step:10,train_loss:685.2200088659672\n",
      "epoch:2,step:10,train_loss:820.2468480290229\n",
      "epoch:3,step:10,train_loss:666.1931826512769\n",
      "epoch:4,step:10,train_loss:727.6980902930643\n",
      "epoch:5,step:10,train_loss:826.3627632551963\n",
      "epoch:6,step:10,train_loss:621.8720946093487\n",
      "epoch:7,step:10,train_loss:647.0720291632867\n",
      "epoch:8,step:10,train_loss:506.75218608015985\n",
      "epoch:9,step:10,train_loss:572.9495465687834\n",
      "epoch:10,step:10,train_loss:739.9287686807377\n",
      "epoch:11,step:10,train_loss:701.3069868030886\n",
      "epoch:12,step:10,train_loss:504.6173525810622\n",
      "epoch:13,step:10,train_loss:546.2960882467438\n",
      "epoch:14,step:10,train_loss:464.97120292352605\n",
      "epoch:15,step:10,train_loss:636.5070527863252\n",
      "epoch:16,step:10,train_loss:454.508396489063\n",
      "epoch:17,step:10,train_loss:614.5352969761063\n",
      "epoch:18,step:10,train_loss:548.0972951701212\n",
      "epoch:19,step:10,train_loss:593.9020463961418\n",
      "epoch:20,step:10,train_loss:497.8482247793022\n",
      "epoch:21,step:10,train_loss:467.70134985908527\n",
      "epoch:22,step:10,train_loss:554.3671972326024\n",
      "epoch:23,step:10,train_loss:429.29433418584915\n",
      "epoch:24,step:10,train_loss:478.12892953182444\n",
      "epoch:25,step:10,train_loss:349.6213798907313\n",
      "epoch:26,step:10,train_loss:242.04885444068026\n",
      "epoch:27,step:10,train_loss:412.56334745514255\n",
      "epoch:28,step:10,train_loss:293.2617565994175\n",
      "epoch:29,step:10,train_loss:277.951808921428\n",
      "epoch:30,step:10,train_loss:307.34231794720296\n",
      "epoch:31,step:10,train_loss:276.59078201915423\n",
      "epoch:32,step:10,train_loss:317.43987335817565\n",
      "epoch:33,step:10,train_loss:171.25676201467934\n",
      "epoch:34,step:10,train_loss:175.2859905243372\n",
      "epoch:35,step:10,train_loss:191.40712463407866\n",
      "epoch:36,step:10,train_loss:166.64328972138685\n",
      "epoch:37,step:10,train_loss:143.88720001328716\n",
      "epoch:38,step:10,train_loss:126.8870441673669\n",
      "epoch:39,step:10,train_loss:125.8920630180028\n",
      "epoch:40,step:10,train_loss:73.04867649865096\n",
      "epoch:41,step:10,train_loss:61.86605006375271\n",
      "epoch:42,step:10,train_loss:58.74895496620492\n",
      "epoch:43,step:10,train_loss:100.37006780202304\n",
      "epoch:44,step:10,train_loss:131.8071222519095\n",
      "epoch:45,step:10,train_loss:37.2774870483644\n",
      "epoch:46,step:10,train_loss:37.846565690170884\n",
      "epoch:47,step:10,train_loss:100.34902576452548\n",
      "epoch:48,step:10,train_loss:82.70447140403874\n",
      "epoch:49,step:10,train_loss:150.608321664581\n",
      "epoch:50,step:10,train_loss:50.42271506588258\n",
      "epoch:51,step:10,train_loss:26.691352865904136\n",
      "epoch:52,step:10,train_loss:23.149530030533292\n",
      "epoch:53,step:10,train_loss:69.69382981501357\n",
      "epoch:54,step:10,train_loss:37.55310979731757\n",
      "epoch:55,step:10,train_loss:23.60908723710464\n",
      "epoch:56,step:10,train_loss:51.97727185422877\n",
      "epoch:57,step:10,train_loss:79.67717424964769\n",
      "epoch:58,step:10,train_loss:55.99690777404351\n",
      "epoch:59,step:10,train_loss:25.365182936067068\n",
      "epoch:60,step:10,train_loss:50.05407783007538\n",
      "epoch:61,step:10,train_loss:102.63346740309757\n",
      "epoch:62,step:10,train_loss:75.12236110672329\n",
      "epoch:63,step:10,train_loss:45.60052123708489\n",
      "epoch:64,step:10,train_loss:94.98042386154832\n",
      "epoch:65,step:10,train_loss:48.43662959842064\n",
      "epoch:66,step:10,train_loss:55.630790454070464\n",
      "epoch:67,step:10,train_loss:61.744597875747026\n",
      "epoch:68,step:10,train_loss:36.94410292872905\n",
      "epoch:69,step:10,train_loss:26.783214390183797\n",
      "epoch:70,step:10,train_loss:45.1667220280831\n",
      "epoch:71,step:10,train_loss:51.50754501437235\n",
      "epoch:72,step:10,train_loss:59.467762266643746\n",
      "epoch:73,step:10,train_loss:105.8483111005198\n",
      "epoch:74,step:10,train_loss:106.47330723104835\n",
      "epoch:75,step:10,train_loss:51.97510867445821\n",
      "epoch:76,step:10,train_loss:84.63378648822422\n",
      "epoch:77,step:10,train_loss:78.72243349401818\n",
      "epoch:78,step:10,train_loss:50.547500716932035\n",
      "epoch:79,step:10,train_loss:48.70858231608589\n",
      "epoch:80,step:10,train_loss:66.49432735566667\n",
      "epoch:81,step:10,train_loss:36.15445864178404\n",
      "epoch:82,step:10,train_loss:24.765657325451894\n",
      "epoch:83,step:10,train_loss:67.65088550659118\n",
      "epoch:84,step:10,train_loss:55.98271265280832\n",
      "epoch:85,step:10,train_loss:23.5361833493344\n",
      "epoch:86,step:10,train_loss:75.76214795974096\n",
      "epoch:87,step:10,train_loss:50.91673187549388\n",
      "epoch:88,step:10,train_loss:73.70149804972961\n",
      "epoch:89,step:10,train_loss:23.14439235993933\n",
      "epoch:90,step:10,train_loss:35.02240738276181\n",
      "epoch:91,step:10,train_loss:62.38198797442362\n",
      "epoch:92,step:10,train_loss:26.375840847904797\n",
      "epoch:93,step:10,train_loss:53.51268646043208\n",
      "epoch:94,step:10,train_loss:50.20638040158538\n",
      "epoch:95,step:10,train_loss:43.22144103521052\n",
      "epoch:96,step:10,train_loss:29.261199835188343\n",
      "epoch:97,step:10,train_loss:37.53804852615505\n",
      "epoch:98,step:10,train_loss:45.82870682090987\n",
      "epoch:99,step:10,train_loss:43.12708661682001\n",
      "epoch:100,step:10,train_loss:107.41842801829736\n",
      "epoch:101,step:10,train_loss:27.77041673960771\n",
      "epoch:102,step:10,train_loss:54.598685787851885\n",
      "epoch:103,step:10,train_loss:61.58865851671898\n",
      "epoch:104,step:10,train_loss:35.43063335471546\n",
      "epoch:105,step:10,train_loss:84.83436467717232\n",
      "epoch:106,step:10,train_loss:47.64745755008226\n",
      "epoch:107,step:10,train_loss:34.51951862199634\n",
      "epoch:108,step:10,train_loss:66.31378302049347\n",
      "epoch:109,step:10,train_loss:43.58440483636844\n",
      "epoch:110,step:10,train_loss:99.22664685140751\n",
      "epoch:111,step:10,train_loss:60.34121451534604\n",
      "epoch:112,step:10,train_loss:29.50474070142613\n",
      "epoch:113,step:10,train_loss:50.935052309615116\n",
      "epoch:114,step:10,train_loss:88.2023747782807\n",
      "epoch:115,step:10,train_loss:40.953627734547\n",
      "epoch:116,step:10,train_loss:84.01157061367252\n",
      "epoch:117,step:10,train_loss:43.10735380926788\n",
      "epoch:118,step:10,train_loss:38.97924260620065\n",
      "epoch:119,step:10,train_loss:25.818277974660766\n",
      "epoch:120,step:10,train_loss:29.686659051117623\n",
      "epoch:121,step:10,train_loss:67.93681521266073\n",
      "epoch:122,step:10,train_loss:43.3584212085692\n",
      "epoch:123,step:10,train_loss:62.52408693937154\n",
      "epoch:124,step:10,train_loss:89.062385508236\n",
      "epoch:125,step:10,train_loss:33.87878398675573\n",
      "epoch:126,step:10,train_loss:46.032120799792686\n",
      "epoch:127,step:10,train_loss:58.69404266413415\n",
      "epoch:128,step:10,train_loss:27.381427192689415\n",
      "epoch:129,step:10,train_loss:31.15177246363321\n",
      "epoch:130,step:10,train_loss:45.762904228368654\n",
      "epoch:131,step:10,train_loss:32.34956791055586\n",
      "epoch:132,step:10,train_loss:25.392638502794235\n",
      "epoch:133,step:10,train_loss:41.81076300703587\n",
      "epoch:134,step:10,train_loss:56.36503960451611\n",
      "epoch:135,step:10,train_loss:46.60632209095124\n",
      "epoch:136,step:10,train_loss:82.43875977153391\n",
      "epoch:137,step:10,train_loss:95.14097055692531\n",
      "epoch:138,step:10,train_loss:38.41674157953998\n",
      "epoch:139,step:10,train_loss:48.44746835275218\n",
      "epoch:140,step:10,train_loss:37.301252382178326\n",
      "epoch:141,step:10,train_loss:71.91162020845022\n",
      "epoch:142,step:10,train_loss:29.054466082887576\n",
      "epoch:143,step:10,train_loss:29.020260222047746\n",
      "epoch:144,step:10,train_loss:61.50176929680633\n",
      "epoch:145,step:10,train_loss:12.76517327289763\n",
      "epoch:146,step:10,train_loss:51.78982070053759\n",
      "epoch:147,step:10,train_loss:52.21453158016169\n",
      "epoch:148,step:10,train_loss:63.959949480001555\n",
      "epoch:149,step:10,train_loss:48.8063796557405\n",
      "epoch:150,step:10,train_loss:51.38444421352976\n",
      "epoch:151,step:10,train_loss:74.52054754347404\n",
      "epoch:152,step:10,train_loss:76.0073456180228\n",
      "epoch:153,step:10,train_loss:34.61656750797245\n",
      "epoch:154,step:10,train_loss:39.790458285575696\n",
      "epoch:155,step:10,train_loss:14.704703469986272\n",
      "epoch:156,step:10,train_loss:47.1025369215311\n",
      "epoch:157,step:10,train_loss:23.05654806583735\n",
      "epoch:158,step:10,train_loss:59.70873742434863\n",
      "epoch:159,step:10,train_loss:56.861326571327176\n",
      "epoch:160,step:10,train_loss:114.39404395697296\n",
      "epoch:161,step:10,train_loss:18.73733512941991\n",
      "epoch:162,step:10,train_loss:24.307453598936284\n",
      "epoch:163,step:10,train_loss:50.10826140253974\n",
      "epoch:164,step:10,train_loss:27.818605530978193\n",
      "epoch:165,step:10,train_loss:54.36286826566168\n",
      "epoch:166,step:10,train_loss:21.400858156358773\n",
      "epoch:167,step:10,train_loss:49.65070160236208\n",
      "epoch:168,step:10,train_loss:73.76250394456133\n",
      "epoch:169,step:10,train_loss:63.02284333874246\n",
      "epoch:170,step:10,train_loss:28.815282223475435\n",
      "epoch:171,step:10,train_loss:31.59594084913649\n",
      "epoch:172,step:10,train_loss:35.79912426587234\n",
      "epoch:173,step:10,train_loss:50.706006393483214\n",
      "epoch:174,step:10,train_loss:48.48904804291118\n",
      "epoch:175,step:10,train_loss:32.29311307768579\n",
      "epoch:176,step:10,train_loss:39.47844345940825\n",
      "epoch:177,step:10,train_loss:32.62894491421903\n",
      "epoch:178,step:10,train_loss:47.767635474384804\n",
      "epoch:179,step:10,train_loss:13.768876198318813\n",
      "epoch:180,step:10,train_loss:27.489449851533\n",
      "epoch:181,step:10,train_loss:42.57517058164838\n",
      "epoch:182,step:10,train_loss:27.376223635321505\n",
      "epoch:183,step:10,train_loss:23.18757850296923\n",
      "epoch:184,step:10,train_loss:32.491555845470806\n",
      "epoch:185,step:10,train_loss:32.659205772946294\n",
      "epoch:186,step:10,train_loss:60.20674939902517\n",
      "epoch:187,step:10,train_loss:39.205444010688325\n",
      "epoch:188,step:10,train_loss:47.77628083842521\n",
      "epoch:189,step:10,train_loss:63.15888235816204\n",
      "epoch:190,step:10,train_loss:31.377698208730788\n",
      "epoch:191,step:10,train_loss:41.891619450071914\n",
      "epoch:192,step:10,train_loss:21.36517465762104\n",
      "epoch:193,step:10,train_loss:78.76179241932178\n",
      "epoch:194,step:10,train_loss:24.28574450572571\n",
      "epoch:195,step:10,train_loss:37.41174438502844\n",
      "epoch:196,step:10,train_loss:22.63728378066754\n",
      "epoch:197,step:10,train_loss:68.9978814516276\n",
      "epoch:198,step:10,train_loss:15.09530667424078\n",
      "epoch:199,step:10,train_loss:18.32140218902152\n",
      "epoch:200,step:10,train_loss:60.79478193722015\n",
      "epoch:201,step:10,train_loss:34.72626956877638\n",
      "epoch:202,step:10,train_loss:44.2010497113712\n",
      "epoch:203,step:10,train_loss:26.382072419445066\n",
      "epoch:204,step:10,train_loss:47.41094193010912\n",
      "epoch:205,step:10,train_loss:44.02964645219224\n",
      "epoch:206,step:10,train_loss:33.42751507898271\n",
      "epoch:207,step:10,train_loss:32.17372990112276\n",
      "epoch:208,step:10,train_loss:19.059419567363676\n",
      "epoch:209,step:10,train_loss:83.14088375486196\n",
      "epoch:210,step:10,train_loss:15.796263886041265\n",
      "epoch:211,step:10,train_loss:63.27320447128916\n",
      "epoch:212,step:10,train_loss:58.56205213468837\n",
      "epoch:213,step:10,train_loss:22.626465166254498\n",
      "epoch:214,step:10,train_loss:17.98960392377616\n",
      "epoch:215,step:10,train_loss:57.146310903924444\n",
      "epoch:216,step:10,train_loss:44.81797878571819\n",
      "epoch:217,step:10,train_loss:23.1446848548959\n",
      "epoch:218,step:10,train_loss:43.030780878577154\n",
      "epoch:219,step:10,train_loss:26.50114183044732\n",
      "epoch:220,step:10,train_loss:35.00548841159359\n",
      "epoch:221,step:10,train_loss:47.99137225918522\n",
      "epoch:222,step:10,train_loss:36.82423525678796\n",
      "epoch:223,step:10,train_loss:37.735843624847035\n",
      "epoch:224,step:10,train_loss:42.43332033961414\n",
      "epoch:225,step:10,train_loss:43.770623797\n",
      "epoch:226,step:10,train_loss:64.08596154822483\n",
      "epoch:227,step:10,train_loss:56.33364269103487\n",
      "epoch:228,step:10,train_loss:20.307122215416676\n",
      "epoch:229,step:10,train_loss:32.754320788627425\n",
      "epoch:230,step:10,train_loss:69.90446832335768\n",
      "epoch:231,step:10,train_loss:25.25740178662045\n",
      "epoch:232,step:10,train_loss:28.77651939819028\n",
      "epoch:233,step:10,train_loss:38.745639152686664\n",
      "epoch:234,step:10,train_loss:36.04717883066648\n",
      "epoch:235,step:10,train_loss:49.24144997550161\n",
      "epoch:236,step:10,train_loss:75.31760189266026\n",
      "epoch:237,step:10,train_loss:47.93467894285928\n",
      "epoch:238,step:10,train_loss:40.35672939468504\n",
      "epoch:239,step:10,train_loss:63.6494660780191\n",
      "epoch:240,step:10,train_loss:24.553219993821386\n",
      "epoch:241,step:10,train_loss:32.70145437596243\n",
      "epoch:242,step:10,train_loss:56.56181984524375\n",
      "epoch:243,step:10,train_loss:10.182658446064893\n",
      "epoch:244,step:10,train_loss:18.157926786228796\n",
      "epoch:245,step:10,train_loss:27.66948876865034\n",
      "epoch:246,step:10,train_loss:40.21636366280279\n",
      "epoch:247,step:10,train_loss:22.97980752996633\n",
      "epoch:248,step:10,train_loss:28.864436026471616\n",
      "epoch:249,step:10,train_loss:19.423868952003797\n",
      "epoch:250,step:10,train_loss:18.54863739043681\n",
      "epoch:251,step:10,train_loss:22.16717312699801\n",
      "epoch:252,step:10,train_loss:28.5386950644177\n",
      "epoch:253,step:10,train_loss:37.49515198997589\n",
      "epoch:254,step:10,train_loss:35.93391045797602\n",
      "epoch:255,step:10,train_loss:38.326881682643545\n",
      "epoch:256,step:10,train_loss:19.72142877235481\n",
      "epoch:257,step:10,train_loss:62.7802676275235\n",
      "epoch:258,step:10,train_loss:65.55269741946441\n",
      "epoch:259,step:10,train_loss:38.303862108639194\n",
      "epoch:260,step:10,train_loss:42.02774632027659\n",
      "epoch:261,step:10,train_loss:16.07896691628902\n",
      "epoch:262,step:10,train_loss:25.800723572385074\n",
      "epoch:263,step:10,train_loss:23.2485615760327\n",
      "epoch:264,step:10,train_loss:41.51313748983493\n",
      "epoch:265,step:10,train_loss:39.985134377563256\n",
      "epoch:266,step:10,train_loss:31.230155266106348\n",
      "epoch:267,step:10,train_loss:23.149883833782877\n",
      "epoch:268,step:10,train_loss:28.45304622044727\n",
      "epoch:269,step:10,train_loss:39.14892805671912\n",
      "epoch:270,step:10,train_loss:26.163324475525584\n",
      "epoch:271,step:10,train_loss:46.96338133750227\n",
      "epoch:272,step:10,train_loss:23.717800934087848\n",
      "epoch:273,step:10,train_loss:17.961079245379185\n",
      "epoch:274,step:10,train_loss:31.246347084012356\n",
      "epoch:275,step:10,train_loss:23.973086509387613\n",
      "epoch:276,step:10,train_loss:27.579982245826464\n",
      "epoch:277,step:10,train_loss:44.771070883020045\n",
      "epoch:278,step:10,train_loss:31.912060171385523\n",
      "epoch:279,step:10,train_loss:16.6155684443694\n",
      "epoch:280,step:10,train_loss:19.044254097162334\n",
      "epoch:281,step:10,train_loss:51.086433227910824\n",
      "epoch:282,step:10,train_loss:37.08463627134374\n",
      "epoch:283,step:10,train_loss:21.736123957183384\n",
      "epoch:284,step:10,train_loss:39.35200813992877\n",
      "epoch:285,step:10,train_loss:19.669486323296844\n",
      "epoch:286,step:10,train_loss:57.58206976992136\n",
      "epoch:287,step:10,train_loss:27.21099157482608\n",
      "epoch:288,step:10,train_loss:41.96171988157775\n",
      "epoch:289,step:10,train_loss:32.54770219362922\n",
      "epoch:290,step:10,train_loss:26.520884105383\n",
      "epoch:291,step:10,train_loss:37.54949497370031\n",
      "epoch:292,step:10,train_loss:15.534578728221645\n",
      "epoch:293,step:10,train_loss:26.90444132437794\n",
      "epoch:294,step:10,train_loss:29.638067681603275\n",
      "epoch:295,step:10,train_loss:25.10855927804355\n",
      "epoch:296,step:10,train_loss:58.69336773253313\n",
      "epoch:297,step:10,train_loss:35.034382011726834\n",
      "epoch:298,step:10,train_loss:36.64672323246265\n",
      "epoch:299,step:10,train_loss:32.312255521413036\n",
      "epoch:300,step:10,train_loss:12.499797382555714\n",
      "epoch:301,step:10,train_loss:35.120737445701785\n",
      "epoch:302,step:10,train_loss:26.230038924440837\n",
      "epoch:303,step:10,train_loss:37.558491910418084\n",
      "epoch:304,step:10,train_loss:28.885089810481148\n",
      "epoch:305,step:10,train_loss:31.644943691877657\n",
      "epoch:306,step:10,train_loss:19.022466672157776\n",
      "epoch:307,step:10,train_loss:46.20713782802255\n",
      "epoch:308,step:10,train_loss:24.556148406438577\n",
      "epoch:309,step:10,train_loss:10.597659645374446\n",
      "epoch:310,step:10,train_loss:17.09908296604516\n",
      "epoch:311,step:10,train_loss:26.640043753366154\n",
      "epoch:312,step:10,train_loss:40.537937626211374\n",
      "epoch:313,step:10,train_loss:32.616433006624\n",
      "epoch:314,step:10,train_loss:26.267488117945184\n",
      "epoch:315,step:10,train_loss:32.68023470061215\n",
      "epoch:316,step:10,train_loss:28.190990442414922\n",
      "epoch:317,step:10,train_loss:11.542360426069763\n",
      "epoch:318,step:10,train_loss:20.305852650548108\n",
      "epoch:319,step:10,train_loss:105.56698614561269\n",
      "epoch:320,step:10,train_loss:12.355642321763217\n",
      "epoch:321,step:10,train_loss:15.40799472119242\n",
      "epoch:322,step:10,train_loss:33.30942702398265\n",
      "epoch:323,step:10,train_loss:33.862963287304176\n",
      "epoch:324,step:10,train_loss:22.181526341022106\n",
      "epoch:325,step:10,train_loss:34.89793050711395\n",
      "epoch:326,step:10,train_loss:12.970311425424246\n",
      "epoch:327,step:10,train_loss:52.9800295212418\n",
      "epoch:328,step:10,train_loss:22.365382732405873\n",
      "epoch:329,step:10,train_loss:52.783906325792444\n",
      "epoch:330,step:10,train_loss:49.87461764843803\n",
      "epoch:331,step:10,train_loss:17.37546060978417\n",
      "epoch:332,step:10,train_loss:19.686275675777303\n",
      "epoch:333,step:10,train_loss:31.086527294719506\n",
      "epoch:334,step:10,train_loss:16.79264108257087\n",
      "epoch:335,step:10,train_loss:32.73826242849624\n",
      "epoch:336,step:10,train_loss:21.335430142128736\n",
      "epoch:337,step:10,train_loss:39.66984536446379\n",
      "epoch:338,step:10,train_loss:21.705286442205168\n",
      "epoch:339,step:10,train_loss:62.612077107679326\n",
      "epoch:340,step:10,train_loss:16.058654072803918\n",
      "epoch:341,step:10,train_loss:20.84066436442786\n",
      "epoch:342,step:10,train_loss:44.1427267182593\n",
      "epoch:343,step:10,train_loss:13.394451606493167\n",
      "epoch:344,step:10,train_loss:27.559500562937792\n",
      "epoch:345,step:10,train_loss:42.0429421669426\n",
      "epoch:346,step:10,train_loss:26.357980671525283\n",
      "epoch:347,step:10,train_loss:36.12071605720548\n",
      "epoch:348,step:10,train_loss:26.41284189967861\n",
      "epoch:349,step:10,train_loss:42.43179233004853\n",
      "epoch:350,step:10,train_loss:15.608528744149396\n",
      "epoch:351,step:10,train_loss:27.673775380211506\n",
      "epoch:352,step:10,train_loss:23.262047555725758\n",
      "epoch:353,step:10,train_loss:63.69307888387485\n",
      "epoch:354,step:10,train_loss:39.94913327472071\n",
      "epoch:355,step:10,train_loss:43.00844098925161\n",
      "epoch:356,step:10,train_loss:26.509584602058652\n",
      "epoch:357,step:10,train_loss:14.955531808042878\n",
      "epoch:358,step:10,train_loss:32.05641917652696\n",
      "epoch:359,step:10,train_loss:28.070134124379912\n",
      "epoch:360,step:10,train_loss:20.062693855592997\n",
      "epoch:361,step:10,train_loss:26.960338209073107\n",
      "epoch:362,step:10,train_loss:63.664971809750675\n",
      "epoch:363,step:10,train_loss:39.68572294705085\n",
      "epoch:364,step:10,train_loss:41.69830052180791\n",
      "epoch:365,step:10,train_loss:17.225613646451162\n",
      "epoch:366,step:10,train_loss:45.935123229361345\n",
      "epoch:367,step:10,train_loss:41.54798690774651\n",
      "epoch:368,step:10,train_loss:85.39705722015655\n",
      "epoch:369,step:10,train_loss:44.75062270421259\n",
      "epoch:370,step:10,train_loss:42.71811594429439\n",
      "epoch:371,step:10,train_loss:27.906026579905188\n",
      "epoch:372,step:10,train_loss:54.17973703456225\n",
      "epoch:373,step:10,train_loss:27.324822710286874\n",
      "epoch:374,step:10,train_loss:21.920676990761308\n",
      "epoch:375,step:10,train_loss:39.67753098201044\n",
      "epoch:376,step:10,train_loss:22.101826934189905\n",
      "epoch:377,step:10,train_loss:26.26561775792257\n",
      "epoch:378,step:10,train_loss:19.922916955361202\n",
      "epoch:379,step:10,train_loss:29.599188216147347\n",
      "epoch:380,step:10,train_loss:23.669461075998598\n",
      "epoch:381,step:10,train_loss:39.51425348610839\n",
      "epoch:382,step:10,train_loss:29.981395606574765\n",
      "epoch:383,step:10,train_loss:25.068418392085245\n",
      "epoch:384,step:10,train_loss:45.294297502437914\n",
      "epoch:385,step:10,train_loss:16.11385065095555\n",
      "epoch:386,step:10,train_loss:76.51329292778894\n",
      "epoch:387,step:10,train_loss:23.372352273819857\n",
      "epoch:388,step:10,train_loss:17.83287463318856\n",
      "epoch:389,step:10,train_loss:19.057896258215493\n",
      "epoch:390,step:10,train_loss:21.896122117881514\n",
      "epoch:391,step:10,train_loss:11.48985007115471\n",
      "epoch:392,step:10,train_loss:22.87961684606381\n",
      "epoch:393,step:10,train_loss:24.74870705102488\n",
      "epoch:394,step:10,train_loss:31.29525087091241\n",
      "epoch:395,step:10,train_loss:23.811314918857732\n",
      "epoch:396,step:10,train_loss:21.324400691968723\n",
      "epoch:397,step:10,train_loss:23.11856634978004\n",
      "epoch:398,step:10,train_loss:11.448095738372242\n",
      "epoch:399,step:10,train_loss:25.277546796553704\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHYCAYAAAClR1eFAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfvdJREFUeJztnQeYFFXWhs8Ecg6Sg6hIkCiiYECXHMSEWRGV34CAAUWWXUTAgKIrGABdV0FXEcUVFAQEQVAkiqIkEQVBRYIiGYZhpv7nu83tuV1T3dMz07Hqe5+np6erqqvqVFXX/ercc85NsSzLEkIIIYQQD5Ea7x0ghBBCCIk1FECEEEII8RwUQIQQQgjxHBRAhBBCCPEcFECEEEII8RwUQIQQQgjxHBRAhBBCCPEcFECEEEII8RwUQIQQQgjxHBRAhJCwuOSSSyQlJUW9Fi1aFLPtTp482b/dW2+9VbzCzz//7Lf71FNPjffuEOI6KIAIIYQQ4jkogAiJIXiS10/1eMInhBASHyiACCGEEOI50uO9A4SQ5CCWcT8miPvxUuwPISQ20ANECCGEEM9BAUQIIYQQz0EBREgM05m3bdvmn16vXj3/dPNl72oy52m+/fZbue+++6RJkyZSsWJFNe+KK67Ite3Vq1fL6NGj5dJLL5XTTjtNSpcuLUWLFpWqVavK+eefL//85z9l+/btEUuDR1eVXgbp6+DIkSMyYcIEufDCC9V2ixUrJrVr15YbbrhBvvzyy4ikwWN/9DLYT83ChQvl+uuvV7YXL15cKlWqJO3atZOXXnpJMjMzJVyOHj0qY8eOlQsuuEAqV64sJUqUkNNPP13ZsGDBgoQJcl++fLkMGDBAzjrrLKlQoYKyuVatWtK1a1dl8+HDh8Naj2VZMmPGDLnxxhulQYMGUrZsWUlLS5NSpUopG9u3by9DhgyRzz77TLKzs4Ou5/vvv5eHH35Y2rRpo44brj3sU5UqVaRVq1Zy2223yRtvvCF//fVXBI8CIWFiEUKiytatWy381MJ9ffbZZwHfN+eBRx991EpLS8v1vcsvvzzge61btw5re0WKFLGefvrpPO24+OKLg+6jpk+fPv5lJk2aZK1fv95q1KhRyO0PHz485HaxHr0s1u8E9kcvg/3MyMiw7rjjjpDbPfvss609e/bkafd3331nnX766SHXddddd1nHjx+36tat65+G8x6p6wbrDcWhQ4es6667Ls9zXb16dWv27Nkh17Vz506rbdu2YV+v8+fPd1xPsOvU6XXTTTcV6lgRUhAYBE1IlMHTc//+/dX/b775phw8eFD9f8stt0iZMmVyLV+zZs2g63rmmWdk5MiR6n94IM4991wpWbKk8jYUKVIkYFnt2YHHBR6BM844Q8qVK6ee7n///XdZsWKF/PHHH8oTgqd5gKf1SLFjxw7p2LGj2lb58uXloosukmrVqqltwjOzf/9+tdyoUaOkcePGct1110Vs23feeafyLKSmpsp5550nDRs2VJ4KeEg2bdqklvn666/VOZg9e3bQ9fz444/SoUMH2bNnj39a06ZNpUWLFmrda9asUd64V155xfFcxgJ42OCRWblypX9ajRo11PGGxw82LFmyRLKystS5uOyyy+Sdd96Rq6++Ote6sEyPHj2U51ADLyNeOIfHjh2TnTt3KpuxrmA8//zz/usUwPsDL1D16tWVd2zv3r3KO7Rx40a1TULiQoFkEyGkQBTEQ2A+Kaenp1vlypWzpk+fnmu5Y8eOBXzu16+f9fHHH1tHjhxxXO+JEyeUd6VUqVJ+T9CWLVsi5gEqVqyYeh8yZIh1+PDhgOX+/PNPq3379v5lTzvtNCs7OzsiHiC9XXjANm7cGLActjFu3LiAY7p48WLHdWLZdu3a+ZerVKmSNXfu3FzLLViwwKpSpYqVkpJiFS1aNOYeIJxnvRw8LrAvKysrYJkffvjBatWqlX+5smXLOu7fjBkzArxFy5cvD7rddevWqXO7YsWKgOmZmZlW5cqV/esZPXq08o45gevg9ddfD8sDSUikoQAiJIkEUGpqatAGu6BMnTrVv/6HH344YgIIr6FDh4bsatHiC69gjW1+BRBe9evXtw4ePBh021dffbV/2bvvvttxmTlz5gQc9yVLlgRd36pVq3J198RCAP34449q3/RyL730UtD17d271zr11FP9y9522225lnnwwQf981999dUC7ffatWv967jgggsKtA5CYgGDoAlJItBtgSDeSK8TXSXg008/jdh6TznlFBk+fHjQ+QiIRneLxuzCKSxPPfWU3yYnbr/99jy3+9prr/n/RyA1AqCDcc4556jutFjz6quv+oOQ0S13zz33BF0WQdFPP/20//OUKVP83ZCaAwcOBJy/ghCJdRASCxgDREgSgYa4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CEm+drxcuXLeGg0+EmDoDIwqX6ZMGUlJSYnIOvUAq7/88kvEBlhNNNxuo9vt84KNbrfPCza63T4v2HggivZB1kD81KhRQ1JTg0f60AMUBBy0WrVqRWXdONluvKC9ZKPb7fOCjW63zws2ut0+L9hYNkr2hfL8aBgETQghhBDPQQFECCGEEM9BARRDihUrJo8++qh6dytut9Ht9nnBRrfb5wUb3W6fF2wslgD2MQiaEEIIIZ6DHiBCCCGEeA4KIEIIIYR4DgogQgghhHgOCiBCCCGEeA4KoBgyfvx4OfXUU6V48eJy3nnnycqVKyUZGDFihKqGbb4aNmzon3/s2DHp37+/VKpUSUqXLi29evWSXbt2Baxj+/bt0qNHDylZsqRUqVJFBg8eLCdOnIiDNSKff/659OzZU1UJhS0zZswImI+8gOHDh0v16tWlRIkS0rFjR9m8eXPAMnv37pWbbrpJFfAqX7689O3bVw4dOhSwzHfffScXXXSROt+oeDpmzBhJFBtvvfXWXOe0a9euSWPj6NGjpXXr1qpSO66nK664QjZt2hSwTKSuy0WLFsnZZ5+tslXOOOMMmTx5ckLYd8kll+Q6h3fffXdS2AcmTpwozZo18xfCa9u2rcyZM8cV5y8c+5L9/Nl56qmnlA33339/8pxDZIGR6DN16lSraNGi1uuvv26tX7/euuOOO6zy5ctbu3btshKdRx991DrrrLOs33//3f/as2ePf/7dd99t1a5d21qwYIH11VdfWW3atLHOP/98//wTJ05YTZo0sTp27Gh988031uzZs63KlStbQ4cOjYs92P4///lP64MPPkAGpDV9+vSA+U899ZRVrlw5a8aMGda3335rXXbZZVa9evWso0eP+pfp2rWr1bx5c2v58uXWF198YZ1xxhnWDTfc4J+/f/9+q2rVqtZNN91krVu3znrnnXesEiVKWK+88kpC2NinTx9lg3lO9+7dG7BMItvYpUsXa9KkSWq7a9assbp3727VqVPHOnToUESvyy1btlglS5a0Bg0aZG3YsMF68cUXrbS0NGvu3Llxt+/iiy9W9xHzHOKcJIN94KOPPrI+/vhj64cffrA2bdpk/eMf/7CKFCmibE728xeOfcl+/kxWrlxpnXrqqVazZs2s++67zz890c8hBVCMOPfcc63+/fv7P2dlZVk1atSwRo8ebSWDAEJD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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 步骤三 模型训练\n",
    "Batch=0\n",
    "# 记录批次\n",
    "Batchs=[]\n",
    "all_train_accs=[]\n",
    "# 作图\n",
    "def draw_train_acc(Batchs, train_accs):\n",
    "    title=\"training accs\"\n",
    "    plt.title(title, fontsize=24)\n",
    "    plt.xlabel(\"batch\", fontsize=14)\n",
    "    plt.ylabel(\"acc\", fontsize=14)\n",
    "    plt.plot(Batchs, train_accs, color='green', label='training accs')\n",
    "    plt.legend()\n",
    "    plt.grid()\n",
    "    plt.show()\n",
    "\n",
    "# 记录损失值\n",
    "all_train_loss=[]\n",
    "# 绘制损失值随模型迭代次数的变化过程\n",
    "def draw_train_loss(Batchs, train_loss):\n",
    "    title=\"training loss\"\n",
    "    plt.title(title, fontsize=24)\n",
    "    plt.xlabel(\"batch\", fontsize=14)\n",
    "    plt.ylabel(\"loss\", fontsize=14)\n",
    "    plt.plot(Batchs, train_loss, color='red', label='training loss')\n",
    "    plt.legend()\n",
    "    plt.grid()\n",
    "    plt.show()\n",
    "\n",
    "model=Regressor() # 模型实例化\n",
    "model.train() # 训练模式\n",
    "mse_loss = paddle.nn.MSELoss() # 均方差损失函数\n",
    "\n",
    "\n",
    "# opt=paddle.optimizer.Adam(learning_rate=0.01,parameters=model.parameters()) #优化函数 传入学习率和模型参数\n",
    "opt = paddle.optimizer.SGD(learning_rate=0.0001,parameters=model.parameters()) #优化函数 传入学习率和模型参数\n",
    "# opt = paddle.optimizer.Adam(learning_rate=0.01, parameters=model.parameters())\n",
    "\n",
    "# 迭代次数\n",
    "epochs_num=400\n",
    "\n",
    "for pass_num in range(epochs_num):\n",
    "    for batch_id,data in enumerate(train_loader()):\n",
    "    \t# data包括input，label\n",
    "        image = data[0]\n",
    "        label = data[1]\n",
    "        # 前向计算\n",
    "        predict=model(image) #数据传入model\n",
    "        # print(predict)\n",
    "        # print(np.argmax(predict,axis=1))\n",
    "        loss=mse_loss(predict,label)\n",
    "        # acc=paddle.metric.accuracy(predict,label.reshape([-1,1]))#计算精度\n",
    "        # acc = np.mean(label==np.argmax(predict,axis=1))\n",
    "        \n",
    "        # 每10次迭代记录一次损失值,输出\n",
    "        if batch_id!=0 and batch_id%10==0:\n",
    "            Batch = Batch+10\n",
    "            Batchs.append(Batch)\n",
    "            # 记录损失值并打印\n",
    "            all_train_loss.append(loss.numpy().item())\n",
    "            # all_train_accs.append(acc.numpy()[0]) \n",
    "            print(\"epoch:{},step:{},train_loss:{}\".format(pass_num,batch_id,loss.numpy().item())  )     \n",
    "        \n",
    "        # 反向传播\n",
    "        loss.backward()   \n",
    "        # 更新参数\n",
    "        opt.step()\n",
    "        # 重置梯度\n",
    "        opt.clear_grad()  \n",
    "        \n",
    "paddle.save(model.state_dict(),'Regressor')#保存模型\n",
    "draw_train_loss(Batchs,all_train_loss)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-08-11T08:16:43.614301Z",
     "start_time": "2025-08-11T08:16:38.983260Z"
    }
   },
   "id": "ce697742ced26dde",
   "execution_count": 8
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前模型在验证集上的损失值为: 12.702174609833225\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 步骤四 模型评估\n",
    "# 在测试集上验证模型\n",
    "# 首先将先前保存的训练好的参数加载到新的实例化的模型中\n",
    "para_state_dict = paddle.load(\"Regressor\") \n",
    "model = Regressor()\n",
    "model.set_state_dict(para_state_dict) #加载模型参数\n",
    "model.eval() #验证模式\n",
    "\n",
    "losses = []\n",
    "infer_results=[] # 模型输出\n",
    "groud_truths=[] # 真实值\n",
    "\n",
    "# 当前模型的损失值\n",
    "for batch_id,data in enumerate(eval_loader()):#测试集\n",
    "    image=data[0]\n",
    "    label=data[1] \n",
    "    groud_truths.extend(label.numpy())    \n",
    "    predict=model(image) \n",
    "    infer_results.extend(predict.numpy())      \n",
    "    loss=mse_loss(predict,label)\n",
    "    losses.append(loss.numpy().item())\n",
    "    avg_loss = np.mean(losses)\n",
    "print(\"当前模型在验证集上的损失值为:\",avg_loss)\n",
    "\n",
    "# 对比图\n",
    "#绘制真实值和预测值对比图\n",
    "def draw_infer_result(groud_truths,infer_results):\n",
    "    title='Boston'\n",
    "    plt.title(title, fontsize=24)\n",
    "    x = np.arange(1,20) \n",
    "    y = x\n",
    "    plt.plot(x, y)\n",
    "    plt.xlabel('ground truth', fontsize=14)\n",
    "    plt.ylabel('infer result', fontsize=14)\n",
    "    plt.scatter(groud_truths, infer_results,color='green',label='training cost') \n",
    "    plt.grid()\n",
    "    plt.show()\n",
    "\n",
    "draw_infer_result(groud_truths,infer_results)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-08-11T08:18:32.093856Z",
     "start_time": "2025-08-11T08:18:31.972666Z"
    }
   },
   "id": "bd3e549a63d21492",
   "execution_count": 10
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
